package com.zrrd.exam;

import javafx.scene.input.Mnemonic;

import java.io.*;
import java.util.*;
import java.util.concurrent.TimeUnit;

/**
 * @author ywb
 * @Description:
 * @date 2023/3/11 20:04
 */
//2.小团在一个n*m的网格地图上探索。
// 网格地图上第 i 行第 j 列的格子用坐标(i,j)简记。
// 初始时，小团的位置在地图的左上角，即坐标(1,1)。
// 地图上的每一个格子上都有一定的金币，特别地，小团位于的初始位置(1,1)上的金币为0。
// 小团在进行探索移动时，可以选择向右移动一格（即从(x,y)到达(x,y+1)）或向下移动一格
// （即从(x,y)到达(x+1,y)）。地图上的每个格子都有一个颜色，红色或蓝色。如果小团一次移动前后的两个格子颜色不同，
// 那么他需要支付 k 个金币才能够完成这一次移动；如果移动前后的两个格子颜色相同，则不需要支付金币。
// 小团可以在任意格子选择结束探索。现在给你网格地图上每个格子的颜色与金币数量，假设小团初始时的金币数量为0，
// 请你帮助小团计算出最优规划，使他能获得最多的金币，输出能获得的最多金币数量即可。
//
//注意：要求保证小团任意时刻金币数量不小于零。
//
//输入描述
//第一行是三个用空格隔开的整数n、m和k，表示网格地图的行数为n，列数为m，在不同颜色的两个格子间移动需要支付k个金币。
//接下来n行，每行是一个长度为m的字符串，字符串仅包含字符’R’或’B’。
// 第 i 行字符串的第 j 个字符表示地图上第i行第j列的格子颜色，如果字符为’R’则表示格子颜色为红色，
// 为’B’表示格子颜色为蓝色。
//接下来是一个n行m列的非负整数矩阵，第 i 行第 j 列的数字表示地图上第 i 行第 j 列的格子上的金币数量
// 。保证所有数据中数字大小都是介于[0, 10]的整数。


public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入文本:");
        String inputText = scanner.nextLine();//知道，微信，123，qq，456
        System.out.println("请输入标签，使用逗号分隔:");
        String[] inputLabelsStr = scanner.nextLine().split("，");//0 0 0 1 2 0 3 4 4 0 1 2 0 3 4 4
        int[] inputLabels = new int[inputLabelsStr.length];
        for(int i=0; i<inputLabelsStr.length; i++) {
            inputLabels[i] = Integer.parseInt(inputLabelsStr[i]);
        }
        scanner.close();

        List<String> keywords = new ArrayList<>();
        List<String> keyvalues = new ArrayList<>();
        StringBuilder tempKeyword = new StringBuilder();
        StringBuilder tempValue = new StringBuilder();

        for(int i = 0; i < inputLabels.length; i++) {
            if(inputLabels[i] == 1) {
                tempKeyword.append(inputText.charAt(i));
            } else if(inputLabels[i] == 2) {
                tempKeyword.append(inputText.charAt(i));
                if(i == inputLabels.length - 1 || inputLabels[i+1] != 2) {
                    keywords.add(tempKeyword.toString());
                    tempKeyword.setLength(0);
                }
            } else if(inputLabels[i] == 3) {
                tempValue.append(inputText.charAt(i));
            } else if(inputLabels[i] == 4) {
                tempValue.append(inputText.charAt(i));
                if(i == inputLabels.length - 1 || inputLabels[i+1] != 4) {
                    keyvalues.add(tempValue.toString());
                    tempValue.setLength(0);
                }
            }
        }

        System.out.println("关键字: " + keywords + "，串: " + keyvalues);
    }
}

